package com.lh.pattern.chainresponsiblity;

/**  客户端的调用
 *使得多个对象都有机会处理请求，从而避免请求发送者和  
 *接受者的耦合关系，将这个对象连成一条链，并沿着这条链  
 *传递请求，知道有一个对象处理这个请求  
 */  
  


public class ClientCallRequest {  
    public static void main(String[] args) {  
        AbstractRequest ar1=new HandleRequestObject1();  
        AbstractRequest ar2=new HandleRequestObject2();  
        AbstractRequest ar3=new HandleRequestObject3();  
        /**  
         *先把这些对象设置成一条链状，相当于队列等待一样  
         */  
        ar1.setChainRequest(ar2);  
        ar2.setChainRequest(ar3);  
        //调用对象的请求，也就是该请求调用了哪个对象是透明的，  
        //即不知是哪个对象在调用该请求  
        int[] requests={3,23,20,25,12,8,30,31};  
        for(int request:requests){  
            ar1.HandleRequest(request);  
        }  
    }  
}  